// 线程中止
public class ThreadDemo7 {

    // 成员变量, 不受lambda变量捕获的限制
    public static boolean flg = false;

    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            // lambda变量捕获
            // flg 必须为 final修饰的变量, 或者没有修改操作的变量
            // 因为我们通过flg控制, 所有必须要修改它
            // 所以我们将flg作为成员变量, 就不受变量捕获规则的限制了
            while (!flg) {
                System.out.println("hello t");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("t线程结束");
        });

        // 启动t线程
        t.start();

        // main 休眠3秒
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 修改flg, 让t线程中止循环
        flg = true;
    }
}
